﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Reflection;
using System.Linq;


namespace AgendaManager.Service
{
    public class CañoDAO : DAOBase
    {
        public static Caño NuevoCaño(Caño caño)
        {

            try
            {
                int cañoId = GetNextId(caño);

                if (cañoId != 0)
                {
                    caño.Id = cañoId;
                    CreateEntity(caño);

                    return caño;
                }
                else
                {
                    throw new Exception("No se pudo obtener el siguiente id de la entidad: Caño");
                }

                
            }
            catch (Exception)
            {
                throw;
            }
        }

        internal static bool BorrarCaño(object dto)
        {
            Caño c = (Caño)dto;

            if (c.Id != 0)
                return DeleteEntity(dto);

            return false;

        }

        internal static bool Update(object dto)
        {
            try
            {
                return DAOBase.UpdateEntity(dto);
            }
            catch (Exception)
            {

                throw;
            }
        }


        internal static List<Caño> RetrieveEntities(object dto, string filtro)
        {
            List<Caño> dtos = new List<Caño>();

            DataTable dt = GetDataTable(dto, filtro);

            if (dt.Rows.Count > 0)
                dtos = LlenarCaños(dto, dt);

            return dtos;
        }


        private static List<Caño> LlenarCaños(object dto, DataTable dt)
        {
            List<Caño> dtos = new List<Caño>();

            foreach (DataRow dr in dt.Rows)
            {
                Caño aux = new Caño();
                PoblarObjetoDesdeDataRow(aux, dr);

                dtos.Add(aux);
            }

            return dtos;
        }

        internal static object RetrieveEntitiesWhere(object dto, string where)
        {
            throw new NotImplementedException();
        }
    }
}